 /*	
  *				
  *					ISNW ---- It is a war.It is not warcraft!
  *
  *
  *					Author:					zhoukeli(haxixi_keli)
  *					Filename:				IFileSystem.h
  *					CreateTime:				2008/12/21
  *					ModifyTime:				2008/12/21
  *
  */

#ifndef __ISNW_I_FILE_SYSTEM_H__
#define __ISNW_I_FILE_SYSTEM_H__

#include "IReadFile.h"
#include "IReferenceCounted.h"
#include "isnwString.h"

namespace ISNW
{
namespace io
{
	class IFileSystem : public IReferenceCounted
	{
	public:
		virtual ~IFileSystem(){}

	public:
		//! create read file
		virtual IReadFile* createreadfile(const c8* filename) const = 0;

		//! get application path
		virtual core::string getapplicationpath() const = 0;

		//! get resource path
		virtual core::string getresourcepath() const = 0;

		//! get filename from absolute file path
		virtual core::string getfilenamefrompath(const c8*) const = 0;

		//! get file in current directory
		virtual core::string getfileincurrdir(const c8*) const = 0;

		//! get file in current resource directory
		virtual core::string getfileinresourcedir(const c8*) const = 0;

		//! does the given file exist?
		virtual bool doesfileexist(const c8*) const = 0;
	};
} // end namespace io
} // end namespace ISNW
#endif